数字证书分类及怎么区分各类数字证书 | 您所在的位置:网站首页 › 琥珀有几种类型 怎么区分 › 数字证书分类及怎么区分各类数字证书 |
在刚开始接触数字证书的时候,我们经常会听到“服务器证书”,“客户端证书”,“邮件证书”等等相关的数字证书名字,这就是数字证书的一种按照用途分类的分类方式。那么数字证书到底有多少类?又是怎么去区分的呢? 几张证书#下面是我截图的几张证书信息,你知道他们是干什么的,该怎么分类么? 这里有六张证书: 1.我的服务器证书;2.一张中间证书;3.VerSign Class 3 CA证书;4.一张邮件证书;5.我的iOS app软件签名证书;6.我的iOS 推送服务证书。 这里你可以看到,我是按照证书的用途分别来介绍这几张证书的,这就是证书分类的一种方式。通常,数字证书可分为两大类:根据持有者分类和根据秘钥分类。根据证书持有者分类#1.根据证书持有者是否为CA进行分类#根据证书持有者是否为CA,可以将证书分为两类:CA证书和用户证书。CA证书可以为用户或者其他CA签发证书,用户证书则不可以。 X.509证书格式中通过扩展项BasicConstrains来区分这两类证书。当其中的cA项为TRUE时表示为CA证书,为FALSE时表示用户证书。 BasicConstrains扩展项格式用ASN.1描叙如下: BasicConstrains := SEQUENCE { cA BOOLEAN DEFAULT FALSE pathLenConstraint INTEGER(0..MAX) OPTIONAL }上图中的证书2,3都是CA证书,查看第二章证书的ANS.1结构我们可以看到 OBJECT IDENTIFIER2.5.29.19basicConstraints(X.509 extension) BOOLEAN true OCTET STRING(1 elem) SEQUENCE(2 elem) BOOLEAN true # 说明这是一章CA证书 INTEGER 0其他几张就是用户证书,可以看到证书1的ASN.1结构 OBJECT IDENTIFIER2.5.29.19basicConstraints(X.509 extension) OCTET STRING(1 elem) SEQUENCE(0 elem) 2.按照证书持有者类型进行分类#根据证书的持有者类型,通常将证书分为几类:个人证书、单位证书和系统证书等。 个人证书是CA系统给个人签发的证书,代表个人身份。证书之中需要包括个人信息(如姓名、身份证、E-mail、电话等)和个人的公钥。就像上图4,5,6三张证书。 单位证书是CA系统给机构或者组织等签发的证书,代表单位身份。证书中需要包含单位信息 (如名称、组织机构代码、E-mail、联系人等)和单位的公钥。这类证书在一些公司或机构的站点很容易看到,如GitHub的证书,在证书中我们可以看到一些其组织公司的信息。 系统证书是CA系统给系统软件或设备系统签发的证书,又代表系统的省份。证书中需要包含系统的信息(如IP地址,域名等)和系统公钥。系统证书又包括Web服务器证书、域控制器证书、VPN设备证书、OCSP服务器证书、时间戳服务器证书等。证书1就是一张系统证书(Web服务器证书) X.509格式本身并不支持这种分类,通常通过在Subject中增加DN(Distinct Name)项区分,如可以增加OU=PERSON表示个人证书,OU=UNIT表示单位证书等。为保持证书内容的统一性,扩展项KeyUsage、ExtKeyUsage必须设置合适的值。 根据秘钥分类#1.根据密钥对产生方式进行分类#根据秘钥对的产生方式,可将证书分为两类:签名证书和加密证书。 证明签名及私钥只用于签名验签,不能用于加密解密。为了保证密钥对的唯一性,该密钥对必须由用户端密码模块产生和保存,在证书签发过程中CA中心并不知道其私钥,只对其公钥进行操作。 仔细查看上面几张证书,我们就可以通过扩展字段密钥使用 ( 2.5.29.15 )来判断该证书的种类及相关用途。 X.509格式本身并不支持这种分类;通常通过存储位置或者应用系统进行区分。为了保持证书内容的同意性,扩展KeyUsage、ExtKeyUsage必须设置合适的值。 KeyUsage中已经定义的类型如下。 digitalSignature : 表示数字签名;nonRequdiation : 表示不可抵赖;keyEncipherment : 表示秘钥加密;dataEncipherment : 表示数据加密;keyAgreement : 表示秘钥协商;keyCertSign: 表示证书签名;CRLSign : 表示CRL签名;encipherOnly : 表示只用于加密;decipherOnly : 表示只用于解密。2.根据证书用途进行分类#根据证书的用途,通常将证书分为SSL服务器证书、SSL客户端证书、代码签名证书、Email证书,时间戳服务器证书、OCSP服务器证书等。 SSL证书只用于SSL/TLS应用,如证书1,是一张服务器证书,用来保证我的网站与用户连接时的数据安全。 Email证书只用于安全电子邮件,如证书4,我们通过这个可以验证证书是谁的,保证邮件通讯过程中的安全,不被篡改。 代码签名证书只用于对代码进行签名验签。如证书5,我写的APP程序在打包时就用该证书的进行签名,用户在安装我的APP时就可以通过该证书知道该APP是谁开发的,用户只有信任了我的证书才可安装。 X.509格式中通过扩展项ExtKeyUsage来区分这几类证书。为了保持证书内容的统一性,扩展项KeyUsage必须设置合适的值。 在图中证书信息中扩展项扩展的密钥使用 ( 2.5.29.37 ) 我们就可以看出该证书的相关用途。 ExtKeyUsage中已经定义的类型如下。 id-kp-serverAuth :用于SSL/TLS Web服务器身份认证;id-kp-clientAuth :用于SSL/TLS Web客户端身份认证;id-kp-codeSigning : 用于对可下载的执行代码进行签名;id-kp-emailProtection :用于保护E-mail;id-kp-timeStamping : 用于将对象摘要与时间绑定;id-kp-OCSPSigning :用于对OCSP响应包进行签名。参考#[1] 《PKI/CA与数字证书技术大全》 张明德 刘伟 编著 |
CopyRight 2018-2019 实验室设备网 版权所有 |